Mungkin nanti untuk penjelasan syntaxnya. Kita praktikan juga kalau misalnya pakai gimana, kalau nggak pakai gimana gitu. Ya nambah-nambahin durasi bisa lah.
library(gapminder)
library(tidyverse)
gapminder
# A tibble: 1,704 x 6
country continent year lifeExp pop gdpPercap
<fct> <fct> <int> <dbl> <int> <dbl>
1 Afghanistan Asia 1952 28.8 8425333 779.
2 Afghanistan Asia 1957 30.3 9240934 821.
3 Afghanistan Asia 1962 32.0 10267083 853.
4 Afghanistan Asia 1967 34.0 11537966 836.
5 Afghanistan Asia 1972 36.1 13079460 740.
6 Afghanistan Asia 1977 38.4 14880372 786.
7 Afghanistan Asia 1982 39.9 12881816 978.
8 Afghanistan Asia 1987 40.8 13867957 852.
9 Afghanistan Asia 1992 41.7 16317921 649.
10 Afghanistan Asia 1997 41.8 22227415 635.
# ... with 1,694 more rows
plot1_static <- ggplot(data = gapminder)+
geom_point(
aes(x = gdpPercap,
y = lifeExp,
size = pop,
color = continent),
alpha = 0.8,
show.legend = F)+
# pisah per continent
facet_wrap(~continent)+
# skala jadiin logaritma aja
scale_x_log10()+
# biar titiknya nggak kecil-kecil amat
scale_size(range = c(2, 12))+
theme_bw()
plot1_static
library(gganimate)
plot1_animasi <- plot1_static +
# transition time akan membuat frame-frame yang akan ditunjukkan untuk tiap tahunnya
transition_time(year)+
# perhatikan title akan berubah untuk setiap frame time
labs(
title = "Tahun : {frame_time}",
x = "Pendapatan Perkapita",
y = "Usia Harapan Hidup")
#pengaturan animasi nframes adalah banyaknya frame, sedangkan fps adalah frame per seconds
animate(plot1_animasi,
nframes = 300,
fps = 30)
plot2_static <- gapminder %>%
#ambil negara
filter(
country %in% c("Indonesia", "Malaysia", "Cambodia",
"Vietnam", "Thailand", "Singapore")) %>%
ggplot(aes(x = year,
y = lifeExp,
group = country))+
geom_line(
aes(color = country),
size = 1.5,
show.legend = F)+
geom_label(
aes(label = country),
alpha = 0.6)+
labs(
title = "Perkembangan Usia Harapan Hidup tiap Tahun",
y = "Angka Harapan Hidup",
x = "Tahun")+
theme_bw()
plot2_static
plot2_animasi <- plot2_static +
#transition reveal akan menunjukkan transisi secara sekuensial sehingga tiap tahun akan dihold dahulu, lalu ditunjukkan secara perlahan
transition_reveal(year)+
#enter drift agar memberikan efek pergeseran untuk frame baru yang muncul
enter_drift()
# buat animasi
animate(plot2_animasi,
nframes = 300,
fps = 30)
library(nycflights13)
library(lubridate)
flights
# A tibble: 336,776 x 19
year month day dep_time sched_dep_time dep_delay arr_time sched_arr_time
<int> <int> <int> <int> <int> <dbl> <int> <int>
1 2013 1 1 517 515 2 830 819
2 2013 1 1 533 529 4 850 830
3 2013 1 1 542 540 2 923 850
4 2013 1 1 544 545 -1 1004 1022
5 2013 1 1 554 600 -6 812 837
6 2013 1 1 554 558 -4 740 728
7 2013 1 1 555 600 -5 913 854
8 2013 1 1 557 600 -3 709 723
9 2013 1 1 557 600 -3 838 846
10 2013 1 1 558 600 -2 753 745
# ... with 336,766 more rows, and 11 more variables: arr_delay <dbl>,
# carrier <chr>, flight <int>, tailnum <chr>, origin <chr>, dest <chr>,
# air_time <dbl>, distance <dbl>, hour <dbl>, minute <dbl>, time_hour <dttm>
# hitung berapa penerbangan tiap hari
n_flights <- flights %>%
mutate(
date = make_date(year, month, day)) %>%
group_by(date) %>%
count(date) %>%
ungroup()
n_flights
# A tibble: 365 x 2
date n
<date> <int>
1 2013-01-01 842
2 2013-01-02 943
3 2013-01-03 914
4 2013-01-04 915
5 2013-01-05 720
6 2013-01-06 832
7 2013-01-07 933
8 2013-01-08 899
9 2013-01-09 902
10 2013-01-10 932
# ... with 355 more rows
# tambahkan hari dan bulan
n_flights <- n_flights %>%
mutate(
day = wday(date, label = T, abbr = F),
month = month(date, label = T, abbr = F))
plot3_static <- ggplot(data = n_flights,
aes(x = day,
y = n,
fill = day))+
geom_boxplot(show.legend = F,
alpha = 0.8)+
theme_bw()+
scale_fill_brewer(type = "qual",
palette = 3)
plot3_static
plot3_animasi <- plot3_static +
# states akan memberikan efek pergantian states. Sama seperti transition time. Perbedaannya dengan transition time, transition state tidak akan menginterpolasi antar frame nya.
transition_states(month)+
# untuk memberikan efek muncul secara perlahan
enter_appear()+
# memberikan efek menghilang secara perlahan
exit_fade()+
# perhatikan judul akan berubah untuk setiap state
labs(
title = "Bulan : {closest_state}",
x = "",
y = "Count")
animate(plot3_animasi,
nframes = 300,
fps = 30)
plot4_static <- n_flights %>%
# hitung banyaknya penerbangan tiap bulan
count(month,
wt = n) %>%
ungroup() %>%
# buat barplot
ggplot(
aes(x = month,
y = n,
fill = month))+
geom_col(show.legend = F)+
labs(title = "Count of Flights in 2013 from NYC",
y = "count")+
theme_bw()
plot4_static
plot4_animasi <- plot4_static +
# tunjukkan barplot untuk setiap bulan
transition_states(month)+
# untuk meninggalkan jejak barplot, berikan shadow mark
shadow_mark() +
# untuk membuat efek tidak muncul secara tiba-tiba
enter_grow()
animate(plot4_animasi,
nframes = 360,
fps = 30)